<?php
/**
 ***** 扶摇而上、抱守本真 ******
 * @author Dana
 * @Date 2021/6/23
 */


/**
 * 问题一
 * 第 n 的值
 * @param $n 个数
 * @return 结果： 如 1，1，2，3，5，8，13
 * @author Zhoufurong
 * @Date 2021/6/23
 */
function fib($n)
{
    $arr = [];
    $arr[0] = 1;
    $arr[1] = 1;

    for ($i = 2; $i < $n; $i++) {
        $arr[$i] = $arr[$i - 1] + $arr[$i - 2];
    }
    return $arr;
}

function fib_recursive($n)
{
    if ($n == 1 || $n == 2) {
        return 1;
    }

    return fib_recursive($n - 2) + fib_recursive($n - 1);
}

//var_dump(fib_recursive(7));


//问题 二
// 股票 每次损失 10% 多少次 低于原来的 一半
function down($total, $n)
{
    for ($i = $n; $i > 0; $i--) {
        $total = $total - ($total * 0.1);
        echo $total . PHP_EOL;
    }
    return $total;
}

function down_recursive($total, $n = 0)
{
    if ($n == 0) {
        return $total;
    }
    if ($n > 0) {
        $total = $total - ($total * 0.1);
        return down_recursive($total, --$n);
    }

}

//var_dump(down(10000,6));
//var_dump(down_recursive(10000,7));

// 问题3
//比如说，一个刚工作的年轻人，一年挣10万元，能存20%的收入，他每年的工资增长10%。当地的房价是300万元，首付要20%也就是60万，那么他工作多少年能够付得起首付呢？

//这就要计算数列中每一个元素之和了，这个算出来的和，被称为级数。具体到这个问题，我们知道这位年轻人第一年能存2万元，第二年能存2.2万，然后是2.42万、2.66万、2.93万……假如他要存N年才能凑够首付，这个N最后算出来就是15年。


function years_recursive($end = 60, $first = 0, $init = 10, $years = 1)
{
    if ($years == 1) {
        $first = $first + ($init * 0.2);
        echo '第 ' . $years . ' 年 ' . ' 收入 ' . $init . ' 存钱 ' . $first . PHP_EOL;
    } else {
        $init = ($init + $init * 0.1);
        $first = $first + ($init * 0.2);
        echo '第 ' . $years . ' 年 ' . ' 收入 ' . $init . ' 存钱 ' . $first . PHP_EOL;
    }
    if ($first > $end) {
        return $years;
    }
    $years = $years + 1;
    return years_recursive($end, $first, $init, $years);
}

//$years = years_recursive();


// 思考题：

// 如果房价保守估计，每年上涨3%，那年轻人又需要存多少年呢？

function years_up_recursive($price = 300, $salary = 10, $saving = 2, $years = 1)
{
    //echo '第 ' . $years . ' 年 ' . ' 收入 ' . $salary . ' 存钱 ' . $saving . ' 房价' . $price . PHP_EOL;
    $years = $years + 1;
    $salary = ($salary + $salary * 0.1);
    $saving = $saving + ($salary * 0.2);
    $price = ($price + $price * 0.03);
    echo '第 ' . $years . ' 年 ' . ' 收入 ' . $salary . ' 存钱 ' . $saving . ' 房价' . $price . PHP_EOL;

    if ($saving > $price * 0.2) {
        return $years;
    }

    return years_up_recursive($price, $salary, $saving, $years);
}

$money = 10;
for ($n = 1; $n < 15; $n++) {
    // var_dump($money);
    $money = $money + $money * 0.03;
}
//var_dump($money);

function leverMoney($price = 10000, $k = 0.2, $begin = 1, $end = 10)
{

    if ($begin > $end) {
        return $price;
    }

    $price = $price + $price * $k;
    echo '第 ' . $begin . ' 年' . ' money ' . $price . PHP_EOL;
    $begin++;
    leverMoney($price, $k, $begin, $end);
}


var_dump(leverMoney(10000, 0.2, 1, 10));

// 复利润 每年 20%
function leverMoneys($price = 10000, $k = 0.2, $years = 10)
{
    // 第一年  $price*1.2;
    // 第二年  ($price*1.2)*1.2
    // 第三年  ($price*1.2*1.2)*1.2
    // 第四年  ($price*1.2*1.2*1.2)*1.2
    // 最后 $price*(1.2)^$year
    return $price * pow(1.2, $years);
}

var_dump(leverMoneys());